package com.yuetong.business.mapper;

import java.util.List;
import java.util.Map;

import com.yuetong.business.domain.YtMaintenanceRecord;
import com.yuetong.business.domain.YtAssignedTask;

/**
 * 维修记录，用于存储电梯的维护记录Mapper接口
 *
 * @author  卓晓君
 * @date 2025-02-04
 */
public interface YtMaintenanceRecordMapper
{
    /**
     * 查询维修记录，用于存储电梯的维护记录
     *
     * @param recordId 维修记录，用于存储电梯的维护记录主键
     * @return 维修记录，用于存储电梯的维护记录
     */
    public YtMaintenanceRecord selectYtMaintenanceRecordByRecordId(Long recordId);

    /**
     * 查询维修记录，用于存储电梯的维护记录列表
     *
     * @param ytMaintenanceRecord 维修记录，用于存储电梯的维护记录
     * @return 维修记录，用于存储电梯的维护记录集合
     */
    public List<YtMaintenanceRecord> selectYtMaintenanceRecordList(YtMaintenanceRecord ytMaintenanceRecord);

    /**
     * 新增维修记录，用于存储电梯的维护记录
     *
     * @param ytMaintenanceRecord 维修记录，用于存储电梯的维护记录
     * @return 结果
     */
    public int insertYtMaintenanceRecord(YtMaintenanceRecord ytMaintenanceRecord);

    /**
     * 修改维修记录，用于存储电梯的维护记录
     *
     * @param ytMaintenanceRecord 维修记录，用于存储电梯的维护记录
     * @return 结果
     */
    public int updateYtMaintenanceRecord(YtMaintenanceRecord ytMaintenanceRecord);

    /**
     * 删除维修记录，用于存储电梯的维护记录
     *
     * @param recordId 维修记录，用于存储电梯的维护记录主键
     * @return 结果
     */
    public int deleteYtMaintenanceRecordByRecordId(Long recordId);

    /**
     * 批量删除维修记录，用于存储电梯的维护记录
     *
     * @param recordIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteYtMaintenanceRecordByRecordIds(Long[] recordIds);

    /**
     * 批量删除指派维修任务，用于记录维修任务的指派和完成情况
     *
     * @param recordIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteYtAssignedTaskByRecordIds(Long[] recordIds);

    /**
     * 批量新增指派维修任务，用于记录维修任务的指派和完成情况
     *
     * @param ytAssignedTaskList 指派维修任务，用于记录维修任务的指派和完成情况列表
     * @return 结果
     */
    public int batchYtAssignedTask(List<YtAssignedTask> ytAssignedTaskList);


    /**
     * 通过维修记录，用于存储电梯的维护记录主键删除指派维修任务，用于记录维修任务的指派和完成情况信息
     *
     * @param recordId 维修记录，用于存储电梯的维护记录ID
     * @return 结果
     */
    public int deleteYtAssignedTaskByRecordId(Long recordId);

    List<Map> selectLineMaintenance();
}
